Первая программа на Zig
Первая программа на Zig
Установка Zig
Zig распространяется в виде готовых двоичных сборок для всех основных операционных систем: Windows, macOS и Linux. Установка не требует сложных зависимостей и занимает несколько минут.
На Windows
- Перейдите на официальный сайт Zig: https://ziglang.org/download/
- В разделе Windows скачайте архив с последней стабильной версией (обычно файл с расширением
.zip). - Распакуйте архив в удобное место, например, в папку
C:\zig. - Добавьте путь к папке
zigв переменную окруженияPATH. Это позволит запускать командуzigиз любого места в терминале.- Нажмите
Win + R, введитеsysdm.cpl, откройте вкладку Дополнительно, затем нажмите Переменные среды. - В разделе Системные переменные найдите
Path, нажмите Изменить, затем Создать и укажите путь, например:C:\zig.
- Нажмите
- Откройте новое окно терминала (PowerShell или Command Prompt) и введите:
Если команда возвращает номер версии, напримерzig version
0.13.0, установка прошла успешно.
На macOS
Если у вас установлен менеджер пакетов Homebrew, выполните:
brew install zig
Если вы предпочитаете установку вручную:
- Скачайте архив для macOS с официального сайта.
- Распакуйте его, например, в папку
~/Applications/zig. - Добавьте путь в
PATH. Для этого откройте файл~/.zshrc(или~/.bashrc, если используется bash) и добавьте строку:export PATH="$PATH:$HOME/Applications/zig" - Перезагрузите оболочку или выполните:
source ~/.zshrc
- Проверьте установку командой
zig version.
На Linux
Для большинства дистрибутивов рекомендуется использовать официальные сборки с сайта, так как версии в репозиториях часто устаревают.
- Скачайте архив, соответствующий вашей архитектуре (обычно
x86_64-linux). - Распакуйте его, например, в
/opt/zig:sudo tar -xzf zig-linux-x86_64-*.tar.xz -C /optsudo mv /opt/zig-linux-x86_64-* /opt/zig - Добавьте путь в
PATH. Откройте~/.bashrcили~/.profileи добавьте:export PATH="$PATH:/opt/zig" - Примените изменения:
source ~/.bashrc
- Проверьте установку:
zig version
Выбор среды разработки
Zig не требует специальной интегрированной среды разработки (IDE). Достаточно любого текстового редактора с поддержкой синтаксиса Zig. Однако для удобства можно использовать следующие варианты:
- Visual Studio Code — самый популярный выбор. Установите расширение Zig Language Support от автора tiehuis. Оно предоставляет подсветку синтаксиса, автодополнение, навигацию по коду и интеграцию с компилятором.
- Vim / Neovim — с плагином
zig.vimили через LSP-клиент (например,nvim-lspconfigс серверомzls). - Emacs — с пакетом
zig-mode. - JetBrains Rider или CLion — поддерживают Zig через плагины, но требуют дополнительной настройки.
Для первой программы подойдёт даже Блокнот, но использование редактора с подсветкой синтаксиса значительно упрощает чтение и отладку кода.
Создание первой программы
Откройте терминал и создайте новую директорию для проекта:
mkdir hello-zig
cd hello-zig
Внутри этой папки создайте файл с именем main.zig. Имя файла может быть любым, но по соглашению точка входа в программу часто называется main.zig.
Откройте файл в выбранном редакторе и введите следующий код:
const std = @import("std");
pub fn main() void {
std.debug.print("Hello, World!\n", .{});
}
Разберём каждую строку подробно.
Строка 1: импорт стандартной библиотеки
const std = @import("std");
Ключевое слово const объявляет неизменяемую переменную. Здесь переменной std присваивается результат вызова встроенной функции @import("std"). Эта функция загружает модуль стандартной библиотеки Zig, которая содержит базовые инструменты: работу с памятью, вводом-выводом, строками, потоками и многое другое. Стандартная библиотека в Zig — это не внешняя зависимость, а часть самого языка, встроенная в компилятор.
Строка 3: определение функции main
pub fn main() void {
Функция main — это точка входа в программу. Ключевое слово pub означает, что функция видна за пределами текущего модуля (это необходимо, чтобы система запуска могла её вызвать). Слово fn объявляет функцию. После имени main в скобках указываются параметры — в данном случае их нет. Тип возврата указан как void, что означает: функция ничего не возвращает.
Строка 4: вывод текста
std.debug.print("Hello, World!\n", .{});
Вызов std.debug.print отправляет текст в стандартный поток вывода (обычно консоль). Первый аргумент — строковый литерал "Hello, World!\n". Символ \n в конце обеспечивает переход на новую строку после вывода. Второй аргумент — это кортеж (tuple), обозначенный как .{}. В Zig форматирование строки выполняется через заполнители, такие как {}. В данном случае строка не содержит заполнителей, поэтому передаётся пустой кортеж.
Важно: std.debug.print предназначен для отладки и работает даже в режимах, где другие функции ввода-вывода могут быть отключены. Для полноценного вывода в конечных приложениях рекомендуется использовать std.io.getStdOut().writer().
Компиляция и запуск
Вернитесь в терминал, находясь в папке hello-zig, и выполните:
zig run main.zig
Команда zig run компилирует файл и сразу запускает полученный исполняемый файл. В консоли появится:
Hello, World!
Это означает, что программа успешно выполнена.
Если вы хотите получить отдельный исполняемый файл, используйте:
zig build-exe main.zig
На выходе будет создан файл main (в Linux/macOS) или main.exe (в Windows). Его можно запустить напрямую:
./main # Linux/macOS
main.exe # Windows
По умолчанию Zig компилирует в режиме отладки (Debug), который включает проверки границ массивов, переполнения и другие средства безопасности. Для выпуска производственной версии используйте флаг:
zig build-exe -O ReleaseFast main.zig
Флаг -O ReleaseFast отключает отладочные проверки и включает оптимизации, что делает программу быстрее и меньше по размеру.
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Версия 0.3.0 (2018) принесла улучшения в систему управления ошибками. В Zig отсутствуют исключения. Вместо них используется явная передача ошибок через специальный тип error, который может… Zig — это системный язык программирования, разработанный с целью стать простым, надёжным и эффективным инструментом для написания низкоуровневого кода. Он сочетает в себе контроль над ресурсами,… Стандартная библиотека также содержит утилиты для работы с этапом компиляции, метапрограммирования, сериализации и отладки. Она служит не только инструментом, но и примером идиоматичного кода на Zig. Типизация, набор правил определения типа данных значений языка. Особое внимание Zig уделяет безопасности при работе с целочисленными операциями. По умолчанию арифметические операторы проверяют переполнение во время выполнения в режиме отладки. Если происходит… Одна из ключевых особенностей Zig — возможность выполнять функции во время компиляции. Для этого используется модификатор comptime. Функции, помеченные как comptime, выполняются на этапе сборки…История языка Zig
Основы языка Zig
Архитектура системного программирования на Zig
Типы данных и управление памятью
Управляющие конструкции и операторы Zig
Функции и компиляция времени выполнения